Analysis of software systems has proven to be extremely useful to development requirements and to the design of systems. As such, it can be particularly advantageous to incorporate performance analysis into the software development life cycle from the beginning stage of design. Recently, there has been a growing trend to incorporate performance analysis into the software specification. However, these conventional systems lack accuracy and ease of implementation.
Today, when developing an application, it is oftentimes difficult to predict how the application will react under real-world conditions. In other words, it is difficult to predict the performance of an application prior to and during development and/or before completion. Frequently, upon completion, a developer will have to modify the application in order to adhere to real-world conditions. This modification can consume many hours of programming time and delay application deployment—each of which is very expensive.
By way of example, it is often difficult for a programmer to predict operational performance of an application without knowing specific operating environment criterion. In one example, applications often react differently if utilized by a single user as when utilized by a multitude of users. More particularly, the response time of an application is most often decreased upon a multi-user load as opposed to a single user load. Similarly, processor performance reacts differently upon different operating conditions. These and other criteria greatly affect the performance of an application.
While many of these criterions can be estimated with some crude level of certainty, others cannot. For those criterions that can be estimated prior to development, this estimate most often requires a great amount of research and guesswork in order to most accurately determine the criterion. The conventional guesswork approach of performance prediction is not based upon any founded benchmark. As well, these conventional approaches are not systematic in any way. In other words, conventional systems do not enable repetitive testing and/or validation when accessing performance within the application life cycle.
In accordance with traditional application life cycle development, it is currently not possible to proactively (and accurately) address performance issues from the beginning to the end of the life cycle. To the contrary, developers often find themselves addressing performance issues after the fact—after development is complete. This retroactive performance modeling approach is extremely costly and time consuming to the application life cycle.